ActionController::Routing::Routes.draw do |map|
  # The priority is based upon order of creation: first created -> highest priority.
  
  # Sample of regular route:
  # map.connect 'products/:id', :controller => 'catalog', :action => 'view'
  # Keep in mind you can assign values other than :controller and :action

  # Sample of named route:
  # map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

  # You can have the root of your site routed by hooking up '' 
  # -- just remember to delete public/index.html.
  # map.connect '', :controller => "welcome"

  # Allow downloading Web Service WSDL as a file with an extension
  # instead of a file named 'wsdl'
  map.connect 'u/:username', :controller => 'articles', :action => 'index', :username => "#{:username}"
  map.connect 'u/:username/articles/page/:page', :controller => 'articles', :action => 'index', :page=>/\d+/
  map.connect 'u/:username/articles/tag/:tagname', :controller => 'articles', :action => 'tag'

  map.admin 'u/:username/admin', :controller => 'admin/dashboard', :action => 'index'
  
  %w{ articles users }.each do |c|
    map.with_options(:controller => "admin/#{c}") do |finder|
      finder.with_options(:action => 'index') do |indx|
        indx.connect "u/:username/admin/#{c}"
        indx.connect "u/:username/admin/#{c}/page/:page", :page => /\d+/
      end

      finder.connect "u/:username/admin/#{c}/:action/:id", :action => nil, :id => nil
    end
  end
  
  map.connect 'u/:username/:controller/service.wsdl', :action => 'wsdl'
  
  # Install the default route as the lowest priority.
  map.connect 'u/:username/:controller/:action/:id.:format'
  map.connect 'u/:username/:controller/:action/:id'
end
